home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / modula2 / 324 < prev    next >
Encoding:
Internet Message Format  |  1996-08-06  |  2.5 KB

  1. Path: News.MO.NET!usenet
  2. From: Matt Garrett <mattgt@mo.net>
  3. Newsgroups: comp.lang.modula2
  4. Subject: Modula-2 to Pascal
  5. Date: Fri, 16 Feb 1996 22:49:47 -0600
  6. Organization: -=MO.NET=- MVP-Net, Inc's Missouri Operations
  7. Message-ID: <31255E6B.71A7@mo.net>
  8. NNTP-Posting-Host: pm3x2.dialip.mo.net
  9. Mime-Version: 1.0
  10. Content-Type: multipart/mixed; boundary="------------42428DA7AE3"
  11. X-Mailer: Mozilla 2.0 (Win95; I)
  12.  
  13. This is a multi-part message in MIME format.
  14.  
  15. --------------42428DA7AE3
  16. Content-Type: text/plain; charset=us-ascii
  17. Content-Transfer-Encoding: 7bit
  18.  
  19. This is a program written in modula-2 and it needs to be converted into 
  20. pascal i need this by sunday 2-18-95!  Thanks this is for a science fair 
  21. project!
  22.  
  23. --------------42428DA7AE3
  24. Content-Type: text/plain; charset=us-ascii
  25. Content-Transfer-Encoding: 7bit
  26. Content-Disposition: inline; filename="Matt.pas"
  27.  
  28. PROGRAM timeit;
  29.     (*  Illustrates use of the TimeDate module to compare iterative and recursive  *)
  30.     (*  fibonacci functions.                   T.W.     1-20-91;  March 1995       *)
  31.  
  32.     FROM IO       IMPORT RdlngCard, WrLngCard, WrStr, WrChar, WrLn;
  33.     FROM TimeDate IMPORT ZeroTime, StartTime, StopTime, TellTime;
  34.  
  35.     CONST  RepeatFactor = 1000;
  36.     VAR i, N, F: LONGCARD;
  37.  
  38.     PROCEDURE FiboI(N: LONGCARD):LONGCARD;
  39.         (*  Returns the  Nth Fibonacci.  Interative.  *)
  40.         VAR a,b,c,k: LONGCARD;
  41.     BEGIN
  42.         IF  (N = 0) OR (N = 1) THEN
  43.             RETURN 1
  44.         ELSE
  45.             a := 1;
  46.             b := 1;
  47.             FOR k := 2 TO N DO
  48.                 c := a + b;
  49.                 a := b;
  50.                 b := c;
  51.             END;
  52.             RETURN c
  53.         END;
  54.     END FiboI;
  55.  
  56.     PROCEDURE FiboR(N: LONGCARD) :LONGCARD;
  57.         (*  Returns the  Nth Fibonacci.   Recursive.  *)
  58.     BEGIN
  59.         IF  (N = 0) OR (N = 1) THEN
  60.             RETURN 1
  61.         ELSE
  62.             RETURN FiboR(N-1) + FiboR(N-2)
  63.         END;
  64.     END FiboR;
  65.  
  66. BEGIN
  67.     Wrln;  WrStr('Computing the Nth Fibonacci.  Enter N. ');
  68.     N := RdLngCard();
  69.  
  70.     ZeroTime;
  71.     StartTime;
  72.     F := FiboR(N);
  73.     StopTime;
  74.     WrLn;  WrStr('The value is  ');  WrLngCard(F, 5);  WrChar('.');
  75.     WrLn;  WrStr('Elapsed time (recursively): ');  TellTime;
  76.  
  77.     ZeroTime;
  78.     FOR i := 1 TO RepeatFactor DO
  79.         StartTime;
  80.         F := FiboI(N) ;
  81.         StopTime;
  82.     END;
  83.     WrLn;  WrStr('The value is ');  WrLngCard(F, 5);  WrChar('.');
  84.     WrLn;  WrStr('Elapse time * ');  WrLngCard(RepeatFactor,0);
  85.                                                   WrStr(' (iteratively): ');
  86.     TellTime;
  87. END timeit.
  88. --------------42428DA7AE3--
  89.  
  90.